package com.dysjsjy.java.utils;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;

public class MyBatisPlusGenerate {

    public static void main(String[] args) {
        f2();
    }

    public static void f1() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/whattoeat", "root", "root")
                .globalConfig(builder -> {
                    // 设置作者
                    builder.author("dysjsjy")
                            // 指定输出目录为项目的src/main/java目录
                            .outputDir("/Users/ningjiang/IdeaProjects/WhatToEat/KJava/src/main/java");
                })
                .packageConfig(builder -> {
                    // 设置父包名，与项目包名一致
                    builder.parent("com.dysjsjy.java")
                            // 设置模块名，可根据实际情况修改
                            .moduleName("")
                            // 设置mapperXml生成路径到项目的resources/mapper目录
                            .pathInfo(Collections.singletonMap(OutputFile.mapper,
                                    "/Users/ningjiang/IdeaProjects/WhatToEat/KJava/src/main/resources/mapper"));
                })
                .strategyConfig(builder -> {
                    // 移除addInclude方法，让代码生成器处理所有表
                    // 设置过滤表前缀
                    builder.addTablePrefix("t_", "c_");
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .execute();
    }

    public static void f2() {
        FastAutoGenerator.create("jdbc:mysql://localhost:3306/whattoeat", "root", "root")
                // 全局配置
                .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称？")))
                // 包配置
                .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名？")))
                // 策略配置
                .strategyConfig(
                        (scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名，多个英文逗号分隔？所有输入 all")))
                                .entityBuilder()
                                .enableLombok()
                                .addTableFills(
                                        new Column("create_time", FieldFill.INSERT))
                                .build())
                // 使用Freemarker引擎模板，默认的是Velocity引擎模板
                .templateEngine(new FreemarkerTemplateEngine())
                .execute();
    }

    // 处理 all 情况
    protected static List<String> getTables(String tables) {
        return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
    }
}